"""
集合：
    集合（set）是一个无序的不重复元素序列。
    集合中的元素不会重复，并且可以进行交集、并集、差集等常见的集合操作。
    可以使用大括号 { } 创建集合，元素之间用逗号 , 分隔， 或者也可以使用 set() 函数创建集合。
    创建一个空集合必须用 set() 而不是 { }，因为 { } 是用来创建一个空字典

    集合内置方法：
        add()：为集合添加元素
        clear()：移除集合中的所有元素
        copy()：拷贝一个集合
        difference()：返回多个集合的差集
        difference_update()：移除集合中的元素，该元素在指定的集合也存在。
        discard()：删除集合中指定的元素
        intersection()：返回集合的交集
        intersection_update()：返回集合的交集。
        isdisjoint()：判断两个集合是否包含相同的元素，如果没有返回 True，否则返回 False。
        issubset()：判断指定集合是否为该方法参数集合的子集。
        issuperset()：判断该方法的参数集合是否为指定集合的子集
        pop()：随机移除元素
        remove()：移除指定元素
        symmetric_difference()：返回两个集合中不重复的元素集合。
        symmetric_difference_update()：移除当前集合中在另外一个指定集合相同的元素，并将另外一个指定集合中不同的元素插入到当前集合中。
        union()：返回两个集合的并集
        update()：给集合添加元素
        len()：计算集合元素个数
"""

# 创建集合
set1 = set()  # 创建一个空集合
print(type(set1))
set2 = {1, "a", "b", 6, "c"}  # 使用大括号创建集合
print(set2)
list1 = [1, 2, 3, "a", "b", "c"]  # 使用 set() 函数从列表创建集合
set3 = set(list1)
print(type(set3))
# 两个集合间的运算
a = set("abcghijk")
print("a:", a)
b = set("abcdef")
print("b:", b)
print("a-b:", a - b)  # 集合a中包含而集合b中不包含的元素
print("a|b:", a | b)  # 集合a或b中包含的所有元素
print("a&b:", a & b)  # 集合a和b中都包含了的元素
print("a^b:", a ^ b)  # 不同时包含于a和b的元素

# 集合的基本操作
thisSet = set(("python", "java", "c++", "c"))
print("thisSet：", thisSet)
thisSet.add("html")  # 添加元素
print("add后thisSet:", thisSet)
thisSet.update(["css", "vue"])  # 添加元素，且参数可以是列表、元组、字典等
print("update后thisSet:", thisSet)
thisSet.remove("c")  # 移除元素，如果元素不存在，则会发生错误
print("remove后thisSet:", thisSet)
thisSet.discard("html")  # 移除元素，如果元素不存在，不会发生错误
print("discard后thisSet:", thisSet)
thisSet.pop()  # 随机删除集合中的一个元素
print("pop后thisSet:", thisSet)

setDemo = {1, 2, 3, 4, 5, 6}
print("setDemo的长度：", len(setDemo))  # 计算集合 setDemo 元素个数
# 判断元素是否存在集合 setDemo 中
print("判断元素是否存在setDemo中：", 1 in setDemo)
setDemo.clear()  # 清空集合
print("clear后的setDemo", setDemo)